Java-তে Process ক্লাস এবং External Process Management হল একটি গুরুত্বপূর্ণ ফিচার যা Java প্রোগ্রামকে অন্যান্য সিস্টেম প্রোগ্রাম বা কমান্ডগুলোর সাথে ইন্টারঅ্যাক্ট করতে সহায়তা করে। এটি Java অ্যাপ্লিকেশন থেকে বাইরের প্রোগ্রাম বা সিস্টেম কমান্ড চালাতে এবং তাদের আউটপুট এবং ইনপুট পরিচালনা করতে সক্ষম করে।
Process ক্লাস:
Process ক্লাস Java-তে এক্সটার্নাল (বাইরের) প্রোগ্রাম চালানোর জন্য ব্যবহৃত হয়। এটি বাইরের প্রোগ্রাম বা কমান্ডের সাথে যোগাযোগ করার জন্য একাধিক মেথড প্রদান করে, যেমন প্রোগ্রাম চালানো, আউটপুট নেওয়া, ইনপুট পাঠানো ইত্যাদি। এটি Java প্রোগ্রামের জন্য এক ধরনের ইন্টারফেস হিসেবে কাজ করে যা বাইরের সিস্টেম প্রোগ্রামগুলোর সাথে সমন্বয় সাধন করে।
Process ক্লাসের প্রধান বৈশিষ্ট্য:
- Start External Processes:
Processক্লাস বাইরের প্রোগ্রাম চালানোর জন্য ব্যবহৃত হয়। - Redirect Input/Output: বাইরের প্রোগ্রাম থেকে আউটপুট নেয় এবং ইনপুট পাঠায়।
- Process Management: প্রক্রিয়া (process) কন্ট্রোল, যেমন termination চেক করা, প্রক্রিয়ার স্ট্যাটাস ইত্যাদি।
Process ক্লাসের প্রধান মেথডসমূহ:
exec():exec()মেথড ব্যবহার করে Java প্রোগ্রাম বাইরের কমান্ড বা প্রোগ্রাম চালাতে পারে।- এটি বাইরের প্রোগ্রাম চালাতে এবং তার আউটপুট এবং ইনপুট পরিচালনা করতে সহায়তা করে।
Syntax:
Process process = Runtime.getRuntime().exec("command");উদাহরণ:
Process process = Runtime.getRuntime().exec("notepad"); // Opens NotepadgetInputStream():- এটি বাইরের প্রোগ্রামের আউটপুটের স্ট্রিম রিটার্ন করে। আপনি এই স্ট্রিম ব্যবহার করে বাইরের প্রোগ্রামের আউটপুট পড়তে পারেন।
getOutputStream():- এটি বাইরের প্রোগ্রামের ইনপুট স্ট্রিম রিটার্ন করে। আপনি এই স্ট্রিম ব্যবহার করে বাইরের প্রোগ্রামে ডেটা পাঠাতে পারেন।
waitFor():waitFor()মেথড ব্যবহার করে আপনি বাইরের প্রোগ্রামের completion বা termination পর্যন্ত অপেক্ষা করতে পারেন। এটি প্রোগ্রামটির exit status রিটার্ন করে।
Syntax:
int exitCode = process.waitFor();destroy():- বাইরের প্রোগ্রাম বা process শেষ করতে
destroy()মেথড ব্যবহার করা হয়।
- বাইরের প্রোগ্রাম বা process শেষ করতে
Process এবং External Process Management Example:
এখানে একটি উদাহরণ দেওয়া হলো যেখানে Java প্রোগ্রামটি বাইরের প্রোগ্রাম বা কমান্ড চালাবে এবং তার আউটপুট পড়বে।
উদাহরণ 1: বাইরের কমান্ড চালানো এবং আউটপুট দেখানো
import java.io.*;
public class ExternalProcessExample {
public static void main(String[] args) {
try {
// Create a Process to run the "dir" command (for Windows)
Process process = Runtime.getRuntime().exec("dir");
// Get the input stream to read the output of the command
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
// Read and print the output line by line
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
// Wait for the process to terminate
int exitCode = process.waitFor();
System.out.println("Process terminated with exit code: " + exitCode);
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
}
Explanation:
- এখানে আমরা Windows এর
dirকমান্ড চালাচ্ছি, যা বর্তমান ডিরেক্টরির ফাইলের তালিকা দেখাবে। process.getInputStream()ব্যবহার করে আমরা কমান্ডের আউটপুট পড়ছি।process.waitFor()ব্যবহার করে আমরা বাইরের প্রোগ্রামটির termination পর্যন্ত অপেক্ষা করছি এবং শেষে exit code দেখাচ্ছি।
Output (এই কমান্ডটি চালানোর সময় ডিরেক্টরির কনটেন্ট দেখাবে):
C:\Users\YourUsername>dir
... (list of files and directories)
Process terminated with exit code: 0
উদাহরণ 2: বাইরের প্রোগ্রামে ইনপুট পাঠানো
import java.io.*;
public class ExternalProcessInputExample {
public static void main(String[] args) {
try {
// Start a new process running the "ping" command (for Windows)
Process process = Runtime.getRuntime().exec("ping google.com");
// Get the output stream to send input to the process
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(process.getOutputStream()));
// Send some input (if needed)
writer.write("input data");
writer.flush(); // Flush the stream to ensure the data is sent
// Get the input stream to read the output of the command
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
// Read and print the output
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
// Wait for the process to finish
int exitCode = process.waitFor();
System.out.println("Process terminated with exit code: " + exitCode);
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
}
Explanation:
- এখানে,
ping google.comকমান্ড চালানো হচ্ছে এবং বাইরের প্রোগ্রামের ইনপুট স্ট্রিমে কিছু ডেটা পাঠানোর চেষ্টা করা হয়েছে। - বাইরের প্রোগ্রামটি রান করার পর তার আউটপুট পড়া হচ্ছে এবং পরিশেষে প্রোগ্রামটির exit code প্রদর্শন করা হচ্ছে।
Process Management:
- Process Monitor: Java এর
ProcessBuilderক্লাসের মাধ্যমে আপনি প্রক্রিয়াগুলি শুরু করতে পারেন এবং তাদের output ও error স্ট্রিমগুলো অ্যাক্সেস করতে পারেন।
উদাহরণ 3: ProcessBuilder ব্যবহার করে বাইরের প্রোগ্রাম চালানো
import java.io.*;
public class ProcessBuilderExample {
public static void main(String[] args) {
ProcessBuilder processBuilder = new ProcessBuilder();
processBuilder.command("ping", "google.com");
try {
Process process = processBuilder.start();
// Get the output of the process
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
int exitCode = process.waitFor();
System.out.println("Exited with code: " + exitCode);
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
}
- Java
Processক্লাস এবং External Process Management Java প্রোগ্রামে বাইরের প্রোগ্রাম বা সিস্টেম কমান্ড চালানোর জন্য শক্তিশালী এবং নমনীয় মেকানিজম সরবরাহ করে। - আপনি
exec(),getInputStream(),getOutputStream()এবংwaitFor()মেথড ব্যবহার করে বাইরের প্রোগ্রামের আউটপুট এবং ইনপুট ম্যানেজ করতে পারেন। ProcessBuilderক্লাস ব্যবহার করে আপনি বাইরের প্রোগ্রাম বা কমান্ড আরও ভালভাবে পরিচালনা এবং কনফিগার করতে পারেন।
Read more